Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including random-access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), flash memory, and resistive random access memory (RRAM), such as magnetoresistive random access memory (MRAM; also referred to as magnetic random access memory) among others.
Memory devices are utilized as non-volatile memory for a wide range of electronic applications in need of high memory densities, high reliability, and low power consumption. Non-volatile memory may be used in a personal computer, a portable memory stick, a solid state drive (SSD), a personal digital assistant (PDA), a digital camera, a cellular telephone, a portable music player (e.g., MP3 player), a movie player, and other electronic devices, among others. Program code and system data, such as a basic input/output system (BIOS), are typically stored in non-volatile memory devices.
Memory cells can be arranged in a matrix (e.g., an array). For example, an access device (e.g., transistor) of a number of memory cells may be coupled to an access line (one example of which is a “word line”) forming a “row” of the array. The memory elements of each memory cell are coupled to a data line (one example of which is a “bit line”) in a “column” of the array. In this manner, the access device of a memory cell is accessed through a row decoder activating a row of memory cells by selecting the word line coupled to their gates. The programmed state of a row of selected memory cells is determined by causing different currents to flow in the memory elements depending on the resistance associated with a programmed state for a particular memory cell.
Memory cells can be programmed (e.g., erased) to a desired state. That is, one of a number of programmed (e.g., resistance) states can be set for a memory cell. For example, a single level cell (SLC) can represent one of two logic states (e.g., 1, 0). Resistive memory cells can also be programmed to one of more than two programmed states, such as to represent more than two binary digits (e.g., 1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110, 1110). Such cells may be referred to as multi state memory cells, multi-digit cells, or multilevel cells (MLCs).
Non-volatile resistive memory such as resistive random access memory (hereinafter, “RRAM”), stores data by varying the resistance of a resistive memory element. Data may be written to a selected memory cell in an RRAM by applying a predetermined current to the corresponding resistive element. Bi-polar RRAM can be programmed to a number of resistance states by current of various magnitudes flowing in one direction and to a number of additional resistance states by current of various magnitudes flowing in an opposite direction. Resistance states may be programmed in accordance with a linear distribution, or a non-linear distribution.
Magnetoresistive (sometimes shortened to “magnetic”) random access memory (MRAM) utilizes magnetic storage elements to provide a high density, low cost, non-volatile, high speed RAM without the read/write cycle endurance limitations of charge-storage type memory. One type of MRAM utilizes the magnetic field generating current flowing in an adjacent conductor to control orientation of magnetic moments in magnetic material. Spin torque transfer (STT) MRAM controls orientation of magnetic moments in magnetic material by passing current through a magnetic structure (e.g., magnetic spin valve, magnetic tunnel junction (MTJ) such that the magnetic moment of the electrons in the current are first polarized to a particular orientation by one portion of the magnetic structure, which then can transfer the particular orientation to another portion of the magnetic structure.